package com.yfp.operation.service;

import com.yfp.operation.domain.DeviceCurrentComboPlanRoadDO;
import com.yfp.operation.domain.OrderDetailDO;
import com.yfp.operation.domain.dto.CoordinateDTO;
import com.yfp.operation.domain.dto.DamageDTO;
import com.yfp.operation.domain.dto.OrderDetailDTO;
import com.yfp.operation.domain.vo.*;
import com.yfp.operation.domain.vo.DeviceCurrentComboPlanRoadVO;
import com.yfp.operation.domain.vo.MachineVO;
import com.yfp.operation.domain.vo.OrderInfoVO;
import com.yfp.operation.domain.vo.OrderQueueVO;

import java.util.List;

public interface DeviceService {

    /**
     * 获取当前运营用户的设备列表
     *
     * @param coordinateDTO 经纬度实体类
     * @return 设备列表
     */
    List<MachineVO> selectDeviceOperationList(CoordinateDTO coordinateDTO);

    /**
     * 获取设备详情
     *
     * @param machineId 设备id
     * @return 设备详情
     */
    MachineVO selectInfo(String machineId);

    /**
     * 获取设备订单列表
     *
     * @param machineId 设备id
     * @param phone     手机号后四位
     * @return 设备订单列表
     */
    List<OrderQueueVO> orderQueue(String machineId, String phone);

    /**
     * 获取设备订单详情
     *
     * @param orderId 订单id
     * @return 设备订单详情
     */
    List<OrderInfoVO> orderInfo(String orderId);

    /**
     * 运营端一键制作
     *
     * @param orderDetailDTOS 订单详情实体类
     * @return
     */
    Boolean orderOperationMake(List<OrderDetailDTO> orderDetailDTOS);

    /**
     * 小程序一键制作
     *
     * @param orderId 订单id
     * @return
     */
    Boolean orderMinMake(String orderId);

    /**
     * 补货管理-报损数据查询-查询当前的库存
     *
     * @param machineId 设备id
     * @return 报损数据
     */
    List<DeviceCurrentComboPlanRoadVO> currentRoadStockList(String machineId);

    /**
     * 补货管理-报损数据提交
     *
     * @param damageDTOS 报损数据实体类
     * @return 是否成功
     */
    Boolean damageHandle(List<DamageDTO> damageDTOS);


    /**
     * 查看库存
     *
     * @param machineId
     * @return
     */
    List<DeviceCurrentComboPlanRoadDO> roadInfo(String machineId);

    /**
     * 修改库存
     *
     * @param dccprs
     */
    void updateRoad(List<DeviceCurrentComboPlanRoadDO> dccprs);


    /**
     * 同步计划
     *
     * @param machineId
     * @return
     */
    List<DeviceCurrentComboPlanRoadVO> submitPlan(String machineId);


    /**
     * 提交同步计划
     *
     * @param comboList
     */
    void deviceComboStockSync(List<DeviceCurrentComboPlanRoadDO> comboList);

    /**
     * 获取当前投资人用户的设备列表
     *
     * @param coordinateDTO 经纬度实体类
     * @return 设备列表
     */
    List<MachineVO> selectDeviceInvestorList(CoordinateDTO coordinateDTO);

    void setMachineOrderDetail(List<OrderDetailDO> orderDetailDO);

    /**
     * 核销
     * @param ccId
     */
    void verification( Long ccId);

}
